package com.casa_apoio.estoque.mode.dao;

import com.casa_apoio.estoque.mode.entity.Fornecedor;
import com.casa_apoio.model.dao.HibernateDAO;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

public class FornecedorDAO<T> extends HibernateDAO<T> {

    public FornecedorDAO(Class<T> classe, Session session) {
        super(classe, session);
    }

    public List<Fornecedor> listaDeFornecedor() {
        Criteria criteria = criaCriteria();
        criteria.addOrder(Order.asc("nomeFantasia"));
        List<Fornecedor> lista = criteria.list();
        return lista;
    }

    public List<Fornecedor> verificaFornecedorCadastrado(String cnpjCpf) {
        Criterion filtro = Restrictions.eq("cnpjCpf", cnpjCpf);
        Criteria criteria = criaCriteria();
        criteria.addOrder(Order.asc("nomeFantasia")).add(filtro);
        List<Fornecedor> lista = criteria.list();
        return lista;
    }

    public List<Fornecedor> pesquisaFornecedorNomeFantazia(String nomeFantazia) {
        Criterion filtro = Restrictions.like("nomeFantasia", nomeFantazia + "%");
        Criteria criteria = criaCriteria();
        criteria.addOrder(Order.asc("nomeFantasia")).add(filtro);
        List<Fornecedor> lista = criteria.list();
        return lista;
    }
    public List<Fornecedor> pesquisaFornecedorByExample(Fornecedor fornecedor) {
        Example example = Example.create(fornecedor);       
        Criteria criteria = criaCriteria().add(example);
        criteria.addOrder(Order.asc("nomeFantasia"));
        List<Fornecedor> lista = criteria.list();
        return lista;
    }

}
